using System;
using Synapse.Framework.Pipe.BusinessObjects;

namespace Synapse.Framework.Pipe.PipeLines
{
    public interface IOperation<out TFilter, out TInput, TPump>
    {
        IFilter<TOutput, TPump> Out<TOutput>(Func<TFilter, Func<TInput, TOutput>> func);
        IFilter<TOutput, TPump> OutObject<TOutput>(Func<TFilter, Func<TInput, _<TOutput>>> func);
    }

    public interface IOperationFunc<out TInput, TPump>
    {
        IFilter<TOutput, TPump> Out<TOutput>(Func<TInput, TOutput> func);
        IFilter<TOutput, TPump> OutObject<TOutput>(Func<TInput, _<TOutput>> func);
    }
}